package main

import (
	"fmt"
	"time"
)

//一个普通的函数，功能仅仅是循环10次，每次输出
func myGo(name string) {
	for i := 0; i < 10; i++ {
		fmt.Printf("In goroutime %s\n", name)
		// 为了避免第一个协程执行过快，观察不到并发的效果，加个休眠
		time.Sleep(10 * time.Millisecond)
	}
}

func main() {
	//从输出结果能看出。两个协程是并发执行的。 不会等协程1号执行完后，再去执行2号
	//记忆：遇到go关键字，就要明白，这是异步任务了。创建后瞬间就会往下继续执行。
	go myGo("协程1号")
	go myGo("协程2号")

	//和前面的例子一样，这里不加阻塞的话，main函数就直接结束了，等不到两个协程的执行
	time.Sleep(time.Second)
}
